Cloud computing allows users with various computing capabilities to store and process data using shared pools of configurable resources for cost and computing efficiency. Current programming models for cloud computing include MapReduce, Dryad, and Bulk Synchronous Parallel cloud processing. One of the problems facing distributed computations is performance. Performance in a distributed computation is related to a proximity of data to the computation units and data transfer costs between computation units.